# -*- coding: utf-8 -*


# 打印工具类, 用于将文本输出到屏幕
class PrintTool:

    @staticmethod
    def __str_length(title, data):
        return max(len(str(data)), len(title))

    def print_by_infos(self, titles: [], data: []):
        split_str = '        '  # 分割长度
        # format_data_lengths = []  # 排版格式化对应长度
        format_data = []  # 排版对应格式化后的数据
        format_titles = []  # 排版对应格式化后的标题
        for i in range(0, len(titles)):
            format_length = self.__str_length(titles[i], data[i])
            # format_data_lengths.append(format_length)
            format_data.append(('%{0}s'.format(format_length) % data[i]))
            format_titles.append('%{0}s'.format(format_length) % titles[i])

        # 标题行
        line_title = ' '
        for t in format_titles:
            line_title += t
            if format_titles.index(t) != len(format_titles) - 1:
                line_title += split_str
        line_title += ' '

        # 数据行
        line_data = ' '
        for d in format_data:
            line_data += d
            if format_data.index(d) != len(format_data) - 1:
                line_data += split_str
        line_data += ' '

        # 分割线
        line_split = ''
        for i in range(0, len(line_data)):
            line_split += '-'

        print(line_split)
        print(line_title)
        print(line_split)
        print(line_data)
        print(line_split)
